import { defineStore } from 'pinia'
import { store } from '../index'
import type { LangType, LangItemType } from './types'
// state的类型
interface StateType {
  curLang: LangType
  localeMap: LangItemType[]
}
export const useLocaleStore = defineStore('locale', {
  state: (): StateType => ({
    // 存储当前语言
    curLang: (localStorage.getItem('lang') as LangType) || 'zh-CN',
    // 存储语言选择数组
    localeMap: [
      {
        lang: 'zh-CN',
        name: '简体中文',
      },
      {
        lang: 'en',
        name: 'English',
      },
    ],
  }),
  getters: {
    // 获取当前语言
    getCurrentLocale(): LangType {
      return this.curLang
    },
    // 获取语言选择数组
    getLocaleMap(): LangItemType[] {
      return this.localeMap
    },
  },
  actions: {
    // 更改当前语言并存储在localStorage
    setLang(lang: LangType) {
      this.curLang = lang
      localStorage.setItem('lang', lang)
    },
  },
  persist: true, // 启用持久化
})

// 在非setup的js环境中使用
export const useLocaleStoreWithOut = () => {
  return useLocaleStore(store)
}
